package com.xdcplus.web.service.bd;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.bd.BdOpeDTO;
import com.xdcplus.web.common.pojo.dto.bd.BdOpeFilterDTO;
import com.xdcplus.web.common.pojo.entity.bd.BdOpe;
import com.xdcplus.web.common.pojo.vo.bd.BdOpeByQaVO;
import com.xdcplus.web.common.pojo.vo.bd.BdOpeVO;

import java.util.List;


/**
 * 工序管理(BdOpe)表服务接口层
 *
 * @author Fish.Fei
 * @since 2023-02-03 11:20:49
 */
public interface BdOpeService extends BaseService<BdOpe, BdOpe, BdOpeVO> {

    /**
     * 添加工序管理(BdOpe)
     *
     * @param bdOpeDTO 工序管理(BdOpeDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveBdOpe(BdOpeDTO bdOpeDTO);

    /**
     * 修改工序管理(BdOpe)
     *
     * @param bdOpeDTO 工序管理(BdOpeDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateBdOpe(BdOpeDTO bdOpeDTO);

    /**
     * 批量保存或更新工序管理(BdOpe)
     *
     * @param bdOpeList 工序管理(BdOpeList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<BdOpe> bdOpeList);

    /**
     * 批量保存或更新工序管理(BdOpeDTOList)
     *
     * @param bdOpeDTOList 工序管理(BdOpeDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<BdOpeDTO> bdOpeDTOList);

    /**
     * 删除工序管理(BdOpe)
     *
     * @param id 工序管理(BdOpe)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteBdOpeLogical(Long id);
    
    Boolean deleteBdOpeByIds(String ids);

    /**
     * 查询工序管理(BdOpe)
     *
     * @param bdOpeFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdOpeVO>} 状态信息
     */
    List<BdOpeVO> queryBdOpeVOList(BdOpeFilterDTO bdOpeFilterDTO);

    /**
     * 查询工序管理(BdOpe)
     *
     * @param bdOpeFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdOpeVO>} 状态信息
     */
    PageVO<BdOpeVO> queryBdOpe(BdOpeFilterDTO bdOpeFilterDTO);

    /**
     * 查询一个
     *
     * @param id 工序管理(BdOpe)主键
     * @return {@link BdOpeVO} 工序管理(BdOpe)信息
     */
    BdOpeVO queryBdOpeById(Long id);

    String getOpeNameById(Long id);
    String getOpeNameByOpeCode(String opeCode);

    /**
     * 查询工序管理(BdOpe)（离线设备站点查询）
     *
     * @param bdOpeFilterDTO 过程状态过滤DTO
     */
    List<BdOpeByQaVO> queryBdOpeByQa(BdOpeFilterDTO bdOpeFilterDTO);

    /**
    * @Description 查询所有工序
    * @Author Devin.sang
    * @Date  2023/5/17 9:12
    */
    List<BdOpeVO>  findBdOpe(BdOpeFilterDTO bdOpeFilterDTO);

    /**
    * @Description 按编号查询工序
    * @Author Devin.sang
    * @Date  2023/5/29 9:57
    */
    List<BdOpeVO> getOpeByOpeCodes(List<String> opeCodeList);
    BdOpe queryByOpeCode(String opeCode);

    List<BdOpeVO> queryOpeCodesForOpeCode(String opeCode);


}
